package com.xiexin.group.service.impl;


import com.xiexin.group.domain.ItemAndGroup;
import com.xiexin.group.domain.ItemGroup;
import com.xiexin.group.mapper.ItemAndGroupMapper;
import com.xiexin.group.mapper.ItemGroupMapper;
import com.xiexin.group.service.IItemGroupService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

/**
 * 产品组的管理Service业务层处理
 *
 * @author xiexin
 * @date 2022-03-21
 */
@Service
public class ItemGroupServiceImpl implements IItemGroupService {
    @Resource
    private ItemGroupMapper itemGroupMapper;

    @Resource
    private ItemAndGroupMapper itemAndGroupMapper;

    /**
     * 查询产品组的管理
     *
     * @param id 产品组的管理主键
     * @return 产品组的管理
     */
    @Override
    public ItemGroup selectItemGroupById(Long id) {
        return itemGroupMapper.selectItemGroupById(id);
    }

    /**
     * 查询产品组的管理列表
     *
     * @param itemGroup 产品组的管理
     * @return 产品组的管理
     */
    @Override
    public List<ItemGroup> selectItemGroupList(ItemGroup itemGroup) {
        return itemGroupMapper.selectItemGroupList(itemGroup);
    }

    /**
     * 新增产品组的管理
     *
     * @param itemGroup 产品组的管理
     * @return 结果
     */
    @Override
    public int insertItemGroup(ItemGroup itemGroup) {
        return itemGroupMapper.insertItemGroup(itemGroup);
    }

    /**
     * 修改产品组的管理
     *
     * @param itemGroup 产品组的管理
     * @return 结果
     */
    @Override
    public int updateItemGroup(ItemGroup itemGroup) {
        return itemGroupMapper.updateItemGroup(itemGroup);
    }

    /**
     * 批量删除产品组的管理
     *
     * @param ids 需要删除的产品组的管理主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteItemGroupByIds(Long[] ids) {
        for (Long groupId : ids) {
                // 根据 groupID 查询 中间表
         //   QueryWrapper<ItemAndGroup> queryWrapper = new QueryWrapper<>();
            //通过queryWrapper设置条件
            //查询id>=30记录
            //第一个参数字段名称，第二个参数设置值
         //   queryWrapper.eq("group_id",groupId);
            int i = itemAndGroupMapper.deleteItemAndGroupByGroupId(groupId);
            System.out.println("i = " + i);
        }
        return itemGroupMapper.deleteItemGroupByIds(ids);
    }

    /**
     * 删除产品组的管理信息
     *
     * @param id 产品组的管理主键
     * @return 结果
     */
    @Override
    public int deleteItemGroupById(Long id) {
        return itemGroupMapper.deleteItemGroupById(id);
    }

    @Override
    @Transactional
    public int addItemGroupAndItems(List itemIds, ItemGroup itemGroup) {
        itemGroupMapper.insertItemGroup(itemGroup);
        itemIds.forEach(l -> {
            ItemAndGroup itemAndGroup = new ItemAndGroup();
            itemAndGroup.setGroupId(  itemGroup.getId().intValue()  );
            itemAndGroup.setItemId(Integer.parseInt(l + ""));
            itemAndGroupMapper.insertItemAndGroup(itemAndGroup);
        });
        return 1;
    }

    @Override
    @Transactional
    public int updateGroupAndItemIds(ItemGroup itemGroup, List<Integer> itemIds) {
        itemGroupMapper.updateItemGroup(itemGroup);
        if (itemIds != null) {
            itemAndGroupMapper.deleteItemAndGroupByGroupId(itemGroup.getId());
            itemIds.forEach(l -> {
                ItemAndGroup itemAndGroup = new ItemAndGroup();
                itemAndGroup.setGroupId(itemGroup.getId().intValue());
                itemAndGroup.setItemId(Integer.parseInt(String.valueOf(l)));
                itemAndGroupMapper.insertItemAndGroup(itemAndGroup);
            });
        }
        return 1;
    }
}
